<? include_once('../../../config.php');include_once('../../../ldapConnect.php');

/**
 * Controlador para la búsqueda de canciones.
 * Recoge los parámetros desde la vista y hace uso del modelo para la búsqueda de canciones.
 * Obtiene del modelo los datos necesarios a mostrar en la interfaz.
 * 
 * @package html
 * 
 */
class SubirCancion extends Controlador{
	
	/**
	 * Opciones recogidas para hacerlas visibles fuera de la clase
	 * @var array indexado por nombres de opción
	 */
	public $opt;
	
	/**
	 * Datos a mostrar en la vista, tales como los desplegables
	 * @var array indexado por nombre de la lista
	 */
	public $datos;
	
	/**
	 * Iterador sobre los canciones. Objeto utilizado para obtener las listas y realizar la búsqueda de canciones
	 * @var ListaCanciones
	 */
	private $ListaCanciones;
	
	public $Cancion;
	
	/**
	 * Constructor de la clase
	 * 
	 */
	public function __construct($opciones, $opciones_archivo){
		try{
                    parent::__construct();

                    $this->ListaCanciones = new ListaCanciones();

                    $this->obtener_Datos();

                    $this->obtener_Opciones($opciones, $opciones_archivo);

                    if($this->opt['crear'])
                        $this->crear();
		}catch(Exception $e){
                    $this->opt['error'] = $e->getMessage();
		}

	}
	
	private function obtener_Datos(){
		$this->datos['generos'] = $this->ListaCanciones->lista_Generos();
	}
	
	private function obtener_Opciones($opciones, $opciones_archivo){
            //FB::info($opciones);
            //FB::info($opciones_archivo);
            @($opciones['titulo'])?$this->opt['titulo']=$opciones['titulo']:null;
            @($opciones['artista'])?$this->opt['artista']=$opciones['artista']:null;
            @($opciones['album'])?$this->opt['album']=$opciones['album']:null;
            @($opciones['descripcion'])?$this->opt['descripcion']=$opciones['descripcion']:null;
            @($opciones['generos'])?$this->opt['generos']=$opciones['generos']:null;
            @($opciones['usuario'])?$this->opt['usuario']=$opciones['usuario']:null;

            @($opciones_archivo['fichero'])?$this->opt['fichero']=$opciones_archivo['fichero']:null;

            @($opciones['crear'])?$this->opt['crear']=$opciones['crear']:null;
	}
	
	private function crear(){
		//El objeto $cancion elevará excepciones ante errores en los datos
		try{
			$this->Cancion = new Cancion();
			$id_cancion = $this->Cancion->crear($this->opt);
		
			$this->opt['id_cancion'] = $id_cancion;

                        $this->opt['msg_ok'] = 'Canci&oacute;n subida';
			
			//Si todo ha ido bien, Redirigimos a "showCancion.php":
			//header("Location: showCancion.php?id=$id_cancion&up");
			
		}catch(Exception $e){
			$this->opt['error']= $e->getMessage();
		}
	}
}

?>